package com.ruoyi.cms.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.common.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cms.mapper.CmsDmMapper;
import com.ruoyi.cms.domain.CmsDm;
import com.ruoyi.cms.service.ICmsDmService;
import com.ruoyi.common.core.text.Convert;

/**
 * 文档管理Service业务层处理
 *
 * @author ruoyi
 * @date 2020-06-06
 */
@Service
public class CmsDmServiceImpl implements ICmsDmService {

    @Autowired
    private CmsDmMapper cmsDmMapper;

    /**
     * 查询文档管理
     *
     * @param id 文档管理ID
     * @return 文档管理
     */
    @Override
    public CmsDm selectCmsDmById(Long id) {
        return cmsDmMapper.selectCmsDmById(id);
    }

    /**
     * 查询文档管理列表
     *
     * @param cmsDm 文档管理
     * @return 文档管理
     */
    @Override
    public List<CmsDm> selectCmsDmList(CmsDm cmsDm) {

        Long cid = cmsDm.getCid();
        String result = null;

        if(cid != null) {
            List<Long> ids = getIds(cid);
            result = StringUtils.join(ids, ",");
        }
        System.out.println(result);
        return cmsDmMapper.selectCmsDmList(cmsDm,result);
    }

    /**
     * 新增文档管理
     *
     * @param cmsDm 文档管理
     * @return 结果
     */
    @Override
    public int insertCmsDm(CmsDm cmsDm) {
        cmsDm.setCreateTime(DateUtils.getNowDate());
        return cmsDmMapper.insertCmsDm(cmsDm);
    }

    /**
     * 修改文档管理
     *
     * @param cmsDm 文档管理
     * @return 结果
     */
    @Override
    public int updateCmsDm(CmsDm cmsDm) {
        cmsDm.setUpdateTime(DateUtils.getNowDate());
        return cmsDmMapper.updateCmsDm(cmsDm);
    }

    /**
     * 删除文档管理对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteCmsDmByIds(String ids) {
        return cmsDmMapper.deleteCmsDmByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除文档管理信息
     *
     * @param id 文档管理ID
     * @return 结果
     */
    @Override
    public int deleteCmsDmById(Long id) {
        return cmsDmMapper.deleteCmsDmById(id);
    }

    /**
     * 获取当前类下所有子类id包括子类的子类
     * @param parentid
     * @return
     */
    @Override
    public List<Long> getIds(Long parentid) {

        List<Long> ids = cmsDmMapper.getIds(parentid);
        List<Long> idss = new ArrayList<>();
        idss.addAll(ids);
        xh(idss,ids);
        idss.add(parentid);
        return idss;
    }

    //递归方法
    public void xh(List<Long> idss,List<Long> ids){

        for(Long l: ids){
            List<Long> ids2 = cmsDmMapper.getIds(l);
            idss.addAll(ids2);
            xh(idss,ids2);
        }

    }

    @Override
    public List<CmsDm> getByCid(Long cid) {
        return  cmsDmMapper.getByCid(cid);
    }

}
